'use strict';
var vk; // 全局vk实例
// 涉及的表名
const dbName = require("../../../dao/config.js");

var db = uniCloud.database(); // 全局数据库引用
var _ = db.command; // 数据库操作符
var $ = _.aggregate; // 聚合查询操作符
/**
 * 权限注意：访问以下链接查看
 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#内置权限
 */
var cloudObject = {
	isCloudObject: true, // 标记为云对象模式
	/**
	 * 请求前处理，主要用于调用方法之前进行预处理，一般用于拦截器、统一的身份验证、参数校验、定义全局对象等。
	 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#before-预处理
	 */
	_before: async function() {
		vk = this.vk; // 将vk定义为全局对象
		// let { customUtil, uniID, config, pubFun } = this.getUtil(); // 获取工具包
	},
	/**
	 * 请求后处理，主要用于处理本次调用方法的返回结果或者抛出的错误
	 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#after-后处理
	 */
	_after: async function(options) {
		let { err, res } = options;
		if (err) {
			return; // 如果方法抛出错误，直接return;不处理
		}
		return res;
	},
	/**
	 * 修改分销规则
	 * @url admin/business/sys.salesman.updateFxRule 前端调用的url参数地址
	 */
	updateFxRule: async function(data) {
		let res = { code: 0, msg: '' };
		// 业务逻辑开始-----------------------------------------------------------
		let { fx } = data;
		res.mchInfo = await vk.daoCenter.mchDao.updateMy({
			fx: _.set(fx)
		});
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 分销员审核
	 * @url admin/business/sys.salesman.examine 前端调用的url参数地址
	 */
	examine: async function(data) {
		let { uniID } = this.getUtil(); // 获取工具包
		let res = { code: 0, msg: '' };
		// 业务逻辑开始-----------------------------------------------------------
		let {
			_id,
			status,
			status_str
		} = data;
		// 参数非空检测
		if (vk.pubfn.isNullOne(_id, status)) {
			return { code: -1, msg: '参数错误' };
		}
		if (status === 1) {
			status_str = _.remove();
		}
		let time = Date.now();
		// 执行数据库API请求
		let fxJson = {
			is_fx: status === 1 ? 1 : 0,
			status,
			status_str,
			status_time: time
		};
		let info = await vk.daoCenter.userDao.updateAndReturn({
			whereJson:{
				_id
			},
			dataJson:{
				fx: fxJson
			}
		});
		if (info) {
			if (vk.pubfn.isNull(info.my_invite_code)){
				await uniID.setUserInviteCode({
					uid: _id
				});
			}
			// 这里可以发送短信
		}

		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 获取奖励明细
	 * @url admin/business/sys.salesman.getRewardList 前端调用的url参数地址
	 */
	getRewardList: async function(data) {
		let res = { code: 0, msg: '' };
		let { uid } = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------
		res = await vk.daoCenter.rewardRecDao.getTableData({
			data,
			// 副表列表
			foreignDB: [{
				dbName: dbName.user,
				localKey: "user_id",
				foreignKey: "_id",
				as: "userInfo",
				limit: 1,
				fieldJson: { token:false, password:false },
			}]
		});
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 获取商品业绩明细
	 * @url admin/business/sys.salesman.getGoodsPerList 前端调用的url参数地址
	 */
	getGoodsPerList: async function(data) {
		let res = { code: 0, msg: '' };
		let { uid } = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------
		res = await vk.daoCenter.userGoodsPerDao.getTableData({
			data,
			// 副表列表
			foreignDB: [{
				dbName: dbName.user,
				localKey: "user_id",
				foreignKey: "_id",
				as: "userInfo",
				limit: 1,
				fieldJson: { token:false, password:false },
			}]
		});
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 模板函数
	 * @url admin/business/sys.salesman.test 前端调用的url参数地址
	 */
	test: async function(data) {
		let res = { code: 0, msg: '' };
		let { uid } = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------


		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
};

module.exports = cloudObject;
